// // 数值：转换后还是原来的值
// console.log(Number(324)); // 324

// // 字符串：如果可以被解析为数值，则转换为相应的数值
// Number("324"); // 324

// // 字符串：如果不可以被解析为数值，返回 NaN
// Number("324abc"); // NaN

// // 空字符串转为0
// Number(""); // 0

// // 布尔值：true 转成 1，false 转成 0
// Number(true); // 1
// Number(false); // 0

// // undefined：转成 NaN
// Number(undefined); // NaN

// // null：转成0
// Number(null); // 0
// parseInt("\t\v\r12.34\n"); // 12
// Number("\t\v\r12.34\n"); // 12.34

// console.log(
//   Number({
//     a: 1,
//   })
// );

// console.log(Number([1, 2]));
// console.log(Number([1]));

// Number({
//   toString() {
//     return {};
//   },
// });

// Number({
//   valueOf() {
//     console.log("调用valueOf");
//     return [1];
//   },
//   toString() {
//     console.log("调用toString");
//     return {};
//   },
// });

// console.log(String(1));
// console.log(String(true));
// console.log(String(null));
// console.log(String(undefined));
// console.log(String({ a: 1 }));
// console.log(String([1, 2, 3]));

// console.log(
//   String({
//     valueOf() {
//       console.log("调用valueOf");
//       return 1;
//     },
//     toString() {
//       console.log("调用toString");
//       return {};
//     },
//   })
// );

// console.log({}.valueOf());

// const a = {};
// const b = a.valueOf();
// b.a = 1;
// console.log(a);

// console.log(Boolean(""));
// console.log(Boolean(undefined));
// console.log(Boolean(null));
// console.log(Boolean(0));
// console.log(Boolean({}));

// console.log(String(null));

// console.log(String({ a: 1, b: 2 }));
// console.log(String([1, 2, 3]));

// console.log(Boolean([]));
// console.log(Boolean({}));

// console.log(123 + "abc");
// const a = [1, 2];
// a.valueOf = function () {
//   console.log("调用valueOf");
//   return 2;
// };
// console.log(+a);
